
    }c)                         d 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 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 dd
lmZmZ  ej        e          Z G d d          ZdS )z.Index entries adapters for sphinx.environment.    N)groupby)AnyDictListPatternTuplecast)Builder)IndexDomain)BuildEnvironment)NoUri)___)logging
split_intoc                       e Zd ZdeddfdZd ej        d          fdeded	e	de
eee
eeef                  f                  fd
ZdS )IndexEntriesenvreturnNc                     || _         d S N)r   )selfr   s     Hlib/python3.11/site-packages/sphinx/environment/adapters/indexentries.py__init__zIndexEntries.__init__   s        Tz(.*) ([(][^()]*[)])buildergroup_entries_fixrec                 X	   ! i }d|dfdt           dt           dt           dt          dt          dt           d	df!fd
t          t          | j                            d                    }|j                                        D ]\  }|D ]\  }}!}	}
	 |dk    rL	 t          dd|          \  }}n%# t          $ r t          dd|          \  }d}Y nw xY w |||	|
           n4|dk    r3t          dd|          \  }} |||	|
            |||	|
           n|dk    rUt          dd|          \  }}} ||dz   |z   |	|
            ||dz   |z   |	|
            ||dz   |z   |	|
           n|dk    r5t          dd|          \  }} |t          d          |z  dd|
           ne|dk    r5t          dd|          \  }} |t          d          |z  dd|
           n*t                              t          d          |           # t          $ r4}t                              t          |                     Y d}~d}~ww xY wdt          t           t           f         d	t          t          t           f         fd}|                                D ]W}|d                              |           |d                                         D ]}|d                              |           Xdt          t           t$          f         d	t          t          t&          t           f         t           f         fd!}t)          |                                |          }|rd}d}d }|t+          |          k     r||         \  }\  }}}|s|                    |          }|rx||                    d          k    rI|                    |                    d          g i |g          d                              |           ||= |                    d          }n|}|}|dz  }|t+          |          k     dt          t           t$          f         d	t           fd" d#t          t           t$          f         d	t           f fd$}d% t5          ||          D             S )&z7Create the real index from the collected index entries.TNwordsubwordmainlinkdickeyr   c                 <   t          |           } |                    |           }|s
g i |gx|| <   }|r |d|||d         |           d S |rM	 	                    d
          dz   z   }|d                             ||f           d S # t          $ r Y d S w xY wd S )N    )r#   r$   r%   genindex#r   )strgetget_relative_uriappendr   )r    r!   r"   r#   r$   r%   entryuri	add_entryr   fntids           r   r1   z,IndexEntries.create_index.<locals>.add_entry   s    
 t99DGGDMME 2%'SM1D	E 1	'2t$E!H#NNNNNN 11!22:rBBSH3NC !HOOT3K00000    DD1 1s   B 
BBindexsingle   r(   r'   r%   pairtriple    z, seezsee %sF)r#   r%   seealsozsee also %szunknown index entry type %r)locationr/   c                     | \  }}| |fS r    )r/   r"   r0   s      r   keyfunc0z+IndexEntries.create_index.<locals>.keyfunc0R   s    ID#Hc?"r   r   c                 0   | \  }\  }}}|r|}t          j        d|                                          }|                    d          r
|dd          }|dd                                         s|                    d          rd|f}nd|f}|| d         fS )NNFD   ‏r(   r   r   )unicodedata	normalizelower
startswithisalpha)r/   r%   voidcategory_keylckeysortkeys         r   keyfuncz*IndexEntries.create_index.<locals>.keyfunc\   s    .3+C+$l #")%==E 899 "abb	QqSz!!## %u'7'7'<'< %e* e* U1X&&r   c                 $   t          j        d| d                                                   }|                    d          r
|dd          }|dd                                         s|                    d          rt          d          |z   }|S )NrC   r   rD   r(   r      )rE   rF   rG   rH   rI   chr)r/   r%   s     r   keyfunc2z+IndexEntries.create_index.<locals>.keyfunc2   s    'uQx~~/?/?@@C~~677 !""g1Q3x!! %S^^C%8%8 %#hhnJr   itemc                    | \  }}t          d |d                                         D                       |d<   |d         }|                    d          r
|dd          }t          j        d|d                   d                                         }|                                s|dk    r|S t          d	          S |d         S )
Nc              3   ,   K   | ]\  }\  }}}||fV  d S r   r@   ).0siserJ   s       r   	<genexpr>z>IndexEntries.create_index.<locals>.keyfunc3.<locals>.<genexpr>   s2      OO(>-=b$B8OOOOOOr   r(   r7   r6   rD   rC   r   r   Symbols)sorteditemsrH   rE   rF   upperrI   r   )rS   kvletterrR   s       r   keyfunc3z+IndexEntries.create_index.<locals>.keyfunc3   s    DAqOO!A$**,,OOO&( ( (AaDt << 899 !""A$.uad;;A>DDFF>>## (v} (!M Y<<'tr   c                 6    g | ]\  }}|t          |          fS r@   )list)rV   key_groups      r   
<listcomp>z-IndexEntries.create_index.<locals>.<listcomp>   s=     A A A!T5 tE{{# A A Ar   )r+   boolr   r	   r   r   
get_domainentriesr\   r   
ValueErrorr   loggerwarningr   r   valuessortr   intr[   lenmatchre   
setdefaultextendr   )"r   r   r   r   newdomainri   typevaluer"   	index_keyr/   subentryfirstsecondthirderrrA   
indexentryrN   newlistoldkeyoldsubitemsir%   targetssubitems_keymra   r1   r2   rR   r3   s"    `                            @@@@r   create_indexzIndexEntries.create_index   s     "GK"%$	1 	1C 	1# 	1S 	1 	1	1,/	1;?	1 	1 	1 	1 	1 	1 	1 	1 	1& k48#6#6w#?#?@@!>//11 	: 	:KB5< : :1eS$	:x' ]*.8He.L.LOE88) * * *%/8U%C%CFE')HHH* "	%4YGGGGG ](21fe(D(Dv!	%9EEEE!	&%9EEEEE) ]/9!Xu/M/M,vu!	%#)=tSSSS!	&%$,*>)TTTT!	%v)=tSSSSS 	](21eU(C(Cv!	%8v)=t',)= = = = =* ](21eU(C(Cv!	%=)9)9F)BD',)= = = = = r*G'H'H$Y[\\\! : : :NN3s88bN99999999:9:@	#E#s(O 	#dCi0@ 	# 	# 	# 	# **,, 	/ 	/JqM8,,,&qM0022 / /  X ..../	'5d+ 	'eCHos6J0K 	' 	' 	' 	'$ '222 	 F+/KAc'll" 18..gx %S))A 
%!QWWQZZ/ % (221771::B~NNqQ &w '
$!"!$&Q# c'll" (	E#t), 	 	 	 	 		5d+ 	 	 	 	 	 	 	"A A%,Wh%?%?A A A 	As=   H! B54H!5CH!CEH!!
I+)II)__name__
__module____qualname__r   r   recompiler
   rg   r   r   r   r+   r   r   r@   r   r   r   r      s        ,      DH'1rz2H'I'ITA TAG TAD TA$TAuS$uS#X*?%?@ATA TA TA TA TA TAr   r   )__doc__r   rE   	itertoolsr   typingr   r   r   r   r   r	   sphinx.buildersr
   sphinx.domains.indexr   sphinx.environmentr   sphinx.errorsr   sphinx.localer   r   sphinx.utilr   r   	getLoggerr   rk   r   r@   r   r   <module>r      s2   4 4 				           8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 # # # # # # , , , , , , / / / / / /               + + + + + + + +		8	$	$XA XA XA XA XA XA XA XA XA XAr   