;i}dZddlmZddlmZddlmZddlmZm Z m Z m Z m Z GddeZ Gdd eZGd d eZGd d eZdS)z5Custom element classes related to the numbering part.) OxmlElement)CT_DecimalNumber)ST_DecimalNumber)BaseOxmlElement OneAndOnlyOneRequiredAttribute ZeroOrMore ZeroOrOnecreZdZdZedZedZede Z dZ e dZ dS)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.||S)zmReturn a newly added CT_NumLvl () element having its ``ilvl`` attribute set to `ilvl`.)ilvl)_add_lvlOverride)selfrs GC:\PYTHON\MyICR_Workspace\venv\Lib\site-packages\docx/oxml/numbering.pyadd_lvlOverridezCT_Num.add_lvlOverrides$$$$///ctd}||_tjd|}|||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.newsB'"" (,->OO  =!!! rN)__name__ __module__ __qualname____doc__rrr lvlOverriderrrr classmethodrrrr r s|44"M"344M*_--K  i)9 : :E000 [rr cJeZdZdZeddZedeZdZ dS) CT_NumLvlzu```` element, which identifies a level in a list definition to override with settings it contains.zw:startOverride)zw:lvl successorsw:ilvlc.||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((sW++I/JGGGM  X'7 8 8D00000rr(cFeZdZdZeddZeddZdS)CT_NumPrzYA ```` element, a container for numbering properties applied to a paragraph.r+)rw:numberingChangew:insr)r)r3r4N)r r!r"r#r rrr&rrr2r25sD 9X*S T T TD Ii,J K K KEEErr2cNeZdZdZeddZdZdZedZ dS) CT_NumberingzX```` element, the root element of a numbering part, i.e. numbering.xml.r)zw:numIdMacAtCleanupr)cp|j}t||}||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_numTs3& jjn55$$$rcd|z} ||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[s^)50 G::e$$Q' ' G G G=EFF F Gs"?c|d}d|D}tdt|dzD]}||vrn |S)zThe first ``numId`` unused by a ```` element, starting at 1 and filling any gaps in numbering between existing ```` elements.z./w:num/@w:numIdc,g|]}t|Sr&)int).0 numId_strs r z,CT_Numbering._next_numId..is>>>i3y>>>>>r)r=rangelen)r numId_strsnum_idsrs rr8zCT_Numbering._next_numIddsgZZ 233 >>:>>>CLL1,--  C'!!" rN) r r!r"r#r rr;r@propertyr8r&rrr6r6Nsq *W)A B B BC%%%GGGXrr6N)r#docx.oxml.parserrdocx.oxml.sharedrdocx.oxml.simpletypesrdocx.oxml.xmlchemyrrrr r r r(r2r6r&rrrRsA;;((((((------222222_2 0 0 0 0 0 0 0 0LLLLLLLL2?r