o $a@sdZddlZddlZddlmZddlmZmZmZm Z m Z m Z ddl m Z ddlmZddlmZddlmZdd lmZmZdd lmZmZeeZGd d d ZdS) a sphinx.environment.adapters.indexentries ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Index entries adapters for sphinx.environment. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. N)groupby)AnyDictListPatternTuplecast)Builder) IndexDomain)BuildEnvironment)NoUri)___)logging split_intoc@s\eZdZdeddfddZdedfded ed e de e e e e e e fffd d ZdS) IndexEntriesenvreturnNcCs ||_dSN)r)selfrrJ/usr/lib/python3/dist-packages/sphinx/environment/adapters/indexentries.py__init__s zIndexEntries.__init__Tz(.*) ([(][^()]*[)])builder group_entries_fixrecsi}d|dfdtdtdtdtdtdtd dffd d tt|jd }|jD]\}|D]\}}} } z|d krdz t dd |\} } Wnt yZt dd |\} d} Ynw| | | | dn|dkrt dd|\} }| || | d|| | | dnp|dkrt dd|\} }}| |d|| | d||d| | | d|| d|| | dn>|dkrt dd|\} }| t d|dd| dn$|dkrt dd|\} }| t d|dd| dn t j td|dWq2t y}zt j t|dWYd}~q2d}~wwq,dtttfd tttffd d!}|D]}|d"j|d|dD] } | d"j|dq5q%dtttfd ttttftffd#d$}t||d}|rd}d}d"}|t|kr||\}\}}}|s||}|r||dkr||dgi|gd"|||=qi|d}n|}|}|d7}|t|kspdtttfd tfd%d&d'tttfd tffd(d) }d*d+t||DS),z7Create the real index from the collected index entries.TNwordsubwordmainlinkdickeyrcst|}||}|sgi|g||<}|r$|d|||d|ddS|rHz dd}Wn ty<YdSw|d||fdSdS)N)rr r!genindex#r)strgetget_relative_urir append)rrrrr r!entryuri) add_entryrfntidrrr,$s  z,IndexEntries.create_index..add_entryindexsingler#r"r!pairtriple z, seezsee %sF)rr!seealsoz see also %szunknown index entry type %r)locationr*cSs|\}}| |fSrr)r*rr+rrrkeyfunc0Zs z+IndexEntries.create_index..keyfunc0rcSst|\}\}}}|r |}td|}|dr|dd}|dds+|dr0d|f}nd|f}||dfS)NNFD‏r#rr ) unicodedata normalizelower startswithisalpha)r*r!void category_keylckeysortkeyrrrkeyfuncds    z*IndexEntries.create_index..keyfunccSsTtd|d}|dr|dd}|dds"|dr(td|}|S)Nr;rr<r#r )r=r>r?r@rAchr)r*r!rrrkeyfunc2s    z+IndexEntries.create_index..keyfunc2itemcs|\}}tdd|dDd|d<|ddur@|dr&|dd}td|dd}|s:|d kr<|Std S|dS) Ncss"|] \}\}}}||fVqdSrr).0siserBrrr s z>IndexEntries.create_index..keyfunc3..r#r2r1r<r;rr Symbols)sorteditemsr@r=r>upperrAr )rJkvletter)rIrrkeyfunc3s   z+IndexEntries.create_index..keyfunc3cSsg|] \}}|t|fqSr)list)rKkey_grouprrr sz-IndexEntries.create_index..)r&boolrrr r get_domainentriesrQr ValueErrorr loggerwarningrrvaluessortrintrPlenmatchrY setdefaultextendr)rrrrnewdomainr]typevaluer index_keyr*subentryfirstsecondthirderrr: indexentryrFnewlistoldkey oldsubitemsir!targetssubitems_keymrVr)r,rr-rIr.r create_indexs " *   zIndexEntries.create_index)__name__ __module__ __qualname__r rrecompiler r[rrrr&rr{rrrrrs r)__doc__rr= itertoolsrtypingrrrrrrsphinx.buildersr sphinx.domains.indexr sphinx.environmentr sphinx.errorsr sphinx.localer r sphinx.utilrr getLoggerr|r_rrrrrs