
    Fe                       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m	Z	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rdd
lmZ ddlmZ  ej0                  e      Z G d d      Z	 	 	 	 	 	 	 	 ddZddZddZddZddZ y)z.Index entries adapters for sphinx.environment.    )annotationsN)groupby)TYPE_CHECKINGAnyLiteral)NoUri)___)logging)_split_into)Builder)BuildEnvironmentc                  H    e Zd ZddZd ej
                  d      f	 	 	 ddZy)IndexEntriesc                    || _         |  y N)env)selfr   s     J/usr/lib/python3/dist-packages/sphinx/environment/adapters/indexentries.py__init__zIndexEntries.__init__   s        Tz(.*) ([(][^()]*[)])c           
        i }| j                   j                  d   }|j                  j                         D ]z  \  }}	 |j	                  d|      }|D ][  \  }	}
}}}|duxr | d| }	 |	dk(  r$	 t        dd|
      \  }}t        ||||||	       n|	d
k(  r3t        dd
|
      \  }}t        ||||||	       t        ||||||	       n|	dk(  rWt        dd|
      \  }}}t        ||dz   |z   ||||	       t        ||dz   |z   ||||	       t        ||dz   |z   ||||	       n|	dk(  r.t        dd|
      \  }}t        |t        d      |z  d|d|	       nT|	dk(  r.t        dd|
      \  }}t        |t        d      |z  d|d|	       n!t        j                  t        d      |	|       ^ } |j                         D ]K  \  }}}|j                  t                |j                         D ]  \  }}}|j                  t                 M t#        |j                         t$              }|rd}i }d}|t'        |      k  r||   \  }\  }}}|su|j)                  |      } | r`|| j+                  d      k(  r:|j-                  | j+                  d      g i |g      d   j/                  |       ||= }| j+                  d      }n|}|}|dz  }|t'        |      k  rt1        |t2              D !"cg c]  \  }!}"|!t5        |"      f c}"}!S # t
        $ r d}Y w xY w# t        $ r t        dd|
      \  }d}Y w xY w# t        $ r+}t        j                  t        |      |       Y d}~d}~ww xY wc c}"}!w )z7Create the real index from the collected index entries.indexgenindexF#single       )diclinkkeypairtriple    z, seezsee %sNseealsozsee also %szunknown index entry type %r)locationr"   r   )r   domains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   _key_func_3list)#r   buildergroup_entries_fixrenewindex_domaindocnamer,   rel_uri
entry_typevalue	target_idmaincategory_keyurientry	sub_entryfirstsecondthirderrtargets	sub_items_category_keysub_targets_0_sub_category_keynew_listold_keyold_sub_itemsir"   mkey_r;   s#                                      r   create_indexzIndexEntries.create_index   s     " xx''0 , 4 4 : : < ,	?GW !22:wG
 EL %?@
E9dLU*G'!I;/G#?!X-+/:1h/N,E9 #5)T'*,H#v-(3Avu(Ev"5&$'*,H"65$'*,H#x//:1h/N,vu"5&3,*>'*,H"654<%+?'*,H"5%#+*>'*,H#u,(3Aue(Dv"5!H+*>'*LJ#y0(3Aue(Dv"5!M*:V*CT'*LJ r*G'H*07 ' 9E%?,	?\ 47::< 	2/WiLL[L)8A8H8H8J 24b"3  [ 12	2
 #))+;7 G-/MAc(m#:B1+77gy, S)A"aggaj0 *44 !
R\,BDDEGGMvg ($"#''!*"% )Q# c(m#( &-X{%CE!T5 tE{# E 	Ea      * +%0He%DFE(*I+< " ?NN3s8gN>>?PEsT   L*M0L  D.M3M8LL L>:M=L>>M	M5
 M00M5N)r   r   returnNone)r@   r   rA   boolrB   z
re.Patternr`   z'list[tuple[str, list[tuple[str, Any]]]])__name__
__module____qualname__r   recompiler_    r   r   r   r      s8     DH*4"**5K*L\E'\EA\Er   r   c                   |j                  | g i |g      }|r|d   j                  |g i |g      }|r|d   j                  ||f       y y )Nr   r   )r<   append)wordsubwordrJ   r    r!   r"   rM   s          r   r0   r0   z   sS    NN4"b#/Ea##Gb"c];at% r   c                    | \  }}| |fS )z(sort the index entries for same keyword.rh   )rM   rJ   rL   s      r   r6   r6      s    ID#8S=r   c                    | \  }\  }}}|r|}t        j                  d|j                               }|j                  d      r|dd }|dd j	                         s|j                  d      sd}nd}||f| d   fS )zSort the index entriesNFD   ‏r   Nr   r	   )unicodedata	normalizelower
startswithisalpha)rM   r"   _targets
_sub_itemsrK   lc_keyr;   s          r   r8   r8      s    05-C	-(J""5#))+6F12!A; ):):3)?  6?E!H$$r   c                    t        j                  d| d   j                               }|j                  d      r|dd }|dd j	                         s|j                  d      rt        d      |z   }|S )zsort the sub-index entriesro   r   rp   r   Nr	      )rq   rr   rs   rt   ru   chr)rM   r"   s     r   _key_func_2r|      sf    


uQx~~'7
8C
~~./!"g
1QxS^^C0#hnJr   c                8   | \  }\  }}}t        d |j                         D        t              | d   d<   ||S |j                  d      r|dd }t	        j
                  d|d         d   j                         }|j                         s|dk(  r|S t        d	      S )
zGroup the entries by letterc              3  2   K   | ]  \  }\  }}}||f  y wr   rh   ).0sub_keyrV   rW   rX   s        r   	<genexpr>z_key_func_3.<locals>.<genexpr>   s)      0Mw(Lb:K #K0 0s   r*   r   Nrp   ro   r   r	   Symbols)	r7   r-   r|   rt   rq   rr   upperru   r	   )rM   r"   rS   rT   rK   letters         r   r>   r>      s    .3+C	+'9l 0&__.05@BE!HQK  ~~./!"g""5#a&1!4::<F~~6S= Y<r   )rk   r3   rl   r3   rJ   
str | Noner    zdict[str, list]r!   zstr | Literal[False]r"   r   r`   ra   )rM   ztuple[str, str]r`   ztuple[bool, str])rM   tuple[str, list]r`   ztuple[tuple[int, str], str])rM   r   r`   r3   )!__doc__
__future__r   rf   rq   	itertoolsr   typingr   r   r   sphinx.errorsr   sphinx.localer	   r
   sphinx.utilr   sphinx.util.index_entriesr   sphinx.buildersr   sphinx.environmentr   	getLoggerrc   r1   r   r0   r6   r8   r|   r>   rh   r   r   <module>r      s    4 " 	   . .    1'3			8	$aE aEH&#&+?&FP&UY&%*r   