Xj}dZddlmZddlmZddlmZddlmZm Z m Z m Z m Z GddeZ Gdd eZGd d eZGd d eZy)z5Custom element classes related to the numbering part.) OxmlElement)CT_DecimalNumber)ST_DecimalNumber)BaseOxmlElement OneAndOnlyOneRequiredAttribute ZeroOrMore ZeroOrOnecXeZdZdZedZedZede Z dZ e dZ y)CT_Numz```` element, which represents a concrete list definition instance, having a required child that references an abstract numbering definition that defines most of the formatting details.w:abstractNumIdz w:lvlOverridew:numIdc&|j|S)zmReturn a newly added CT_NumLvl () element having its ``ilvl`` attribute set to `ilvl`.)ilvl)_add_lvlOverride)selfrs g/mnt/ssd/data/Dropbox/adrian/vault-secondbrain/venv/lib/python3.12/site-packages/docx/oxml/numbering.pyadd_lvlOverridezCT_Num.add_lvlOverrides$$$$//cxtd}||_tjd|}|j ||S)zReturn a new ```` element having numId of `num_id` and having a ```` child with val attribute set to `abstractNum_id`.w:numr )rnumIdrnewappend)clsnum_idabstractNum_idnum abstractNumIds rrz CT_Num.news9'" (,,->O  =! rN)__name__ __module__ __qualname____doc__rrr lvlOverriderrrr classmethodrrrr r sD4""34M_-K i)9 :E0 rr c<eZdZdZeddZedeZdZ y) CT_NumLvlzu```` element, which identifies a level in a list definition to override with settings it contains.zw:startOverride)zw:lvl successorsw:ilvlc&|j|S)z|Return a newly added CT_DecimalNumber element having tagname ``w:startOverride`` and ``val`` attribute set to `val`.)val)_add_startOverride)rr-s radd_startOverridezCT_NumLvl.add_startOverride/s&&3&//rN) r r!r"r#r startOverriderrrr/r&rrr(r((s(+/JGM X'7 8D0rr(c8eZdZdZeddZeddZy)CT_NumPrzYA ```` element, a container for numbering properties applied to a paragraph.r+)rw:numberingChangew:insr)r)r3r4N)r r!r"r#r rrr&rrr2r25s# X*S TD i,J KErr2c@eZdZdZeddZdZdZedZ y) CT_NumberingzX```` element, the root element of a numbering part, i.e. numbering.xml.r)zw:numIdMacAtCleanupr)ch|j}tj||}|j|S)zReturn a newly added CT_Num () element referencing the abstract numbering definition identified by `abstractNum_id`.) _next_numIdr r _insert_num)rr next_num_idrs radd_numzCT_Numbering.add_numTs0&& jjn5$$rcld|z} |j|dS#t$rtd|zwxYw)zYReturn the ```` child element having ``numId`` attribute matching `numId`.z./w:num[@w:numId="%d"]rz no element with numId %d)xpath IndexErrorKeyError)rrr=s rnum_having_numIdzCT_Numbering.num_having_numId[sJ)50 G::e$Q' ' G=EF F Gs3c|jd}|Dcgc] }t|}}tdt|dzD] }||vs|SScc}w)zThe first ``numId`` unused by a ```` element, starting at 1 and filling any gaps in numbering between existing ```` elements.z./w:num/@w:numId)r=intrangelen)r numId_strs numId_strnum_idsrs rr8zCT_Numbering._next_numIddseZZ 23 3=>i3y>>>CL1,- C'!   ?sAN) r r!r"r#r rr;r@propertyr8r&rrr6r6Ns5 W)A BC%Grr6N)r#docx.oxml.parserrdocx.oxml.sharedrdocx.oxml.simpletypesrdocx.oxml.xmlchemyrrrr r r r(r2r6r&rrrOsM;(-2_2 0 0LL2?r