o $a @sdZddlmZmZmZmZddlmZddlm Z ddl m Z ddl m Z ddlmZGdd d ejZGd d d eZd e d eeeffddZdS)a sphinx.transforms.compact_bullet_list ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Docutils transforms used by Sphinx when reading documents. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. )AnyDictListcast)nodes)Node)addnodes)Sphinx)SphinxTransformc@s\eZdZdZdeddfddZdejddfddZdej ddfd d Z deddfd d Z dS) RefOnlyListCheckerzRaise `nodes.NodeFound` if non-simple list item is encountered. Here 'simple' means a list item containing only a paragraph with a single reference in it. nodereturnNcCstjN)r NodeFoundselfr rG/usr/lib/python3/dist-packages/sphinx/transforms/compact_bullet_list.py default_visitsz RefOnlyListChecker.default_visitcCsdSrrrrrrvisit_bullet_listsz$RefOnlyListChecker.visit_bullet_listcCsg}|jD] }t|tjs||qt|dkrtjt|dtjs'tj|d}t|dkr4tjt|dtj s?tjtj )Nr) children isinstancer Invisibleappendlenr paragraphr pending_xref SkipChildren)rr rchildpararrrvisit_list_item"s     z"RefOnlyListChecker.visit_list_itemcCsdS)z"Invisible nodes should be ignored.Nrrrrrinvisible_visit2sz"RefOnlyListChecker.invisible_visit) __name__ __module__ __qualname____doc__rrr bullet_listr list_itemr!r"rrrrr s r c@s&eZdZdZdZdeddfddZdS)RefOnlyBulletListTransformzChange refonly bullet lists to use compact_paragraphs. Specifically implemented for 'Indices and Tables' section, which looks odd when html_compact_lists is false. dkwargsr Nc sjjrdSdtdtffdd }jtjD]-}||rE|tjD] }t tj |d}t tj |d}t }||7}|||q$qdS)Nr r cs2tj}z||WdStjyYdSw)z*Check for list with only references in it.FT)r documentwalkrr)r visitorrrrcheck_refonly_listCs  z.check_refonly_listr)confightml_compact_listsrboolr,traverserr'r(rr referencercompact_paragraphreplace)rr+r0r itemr ref compact_pararr/rapply?s z RefOnlyBulletListTransform.apply)r#r$r%r&default_priorityrr;rrrrr)7sr)appr cCs|tddddS)NbuiltinT)versionparallel_read_safeparallel_write_safe) add_transformr))r=rrrsetupWs rCN)r&typingrrrrdocutilsrdocutils.nodesrsphinxrsphinx.applicationr sphinx.transformsr GenericNodeVisitorr r)strrCrrrrs     "