Ë
    \Rði}  ã                   ó    — d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZ  G d„ de«      Z G d„ d	e«      Z G d
„ de«      Z G d„ de«      Zy)z5Custom element classes related to the numbering part.é    )ÚOxmlElement)ÚCT_DecimalNumber)ÚST_DecimalNumber)ÚBaseOxmlElementÚOneAndOnlyOneÚRequiredAttributeÚ
ZeroOrMoreÚ	ZeroOrOnec                   óX   — e Zd ZdZ ed«      Z ed«      Z ede	«      Z
d„ Zed„ «       Zy)ÚCT_NumzÚ``<w:num>`` element, which represents a concrete list definition instance, having
    a required child <w:abstractNumId> that references an abstract numbering definition
    that defines most of the formatting details.úw:abstractNumIdzw:lvlOverrideúw:numIdc                 ó&   — | j                  |¬«      S )zmReturn a newly added CT_NumLvl (<w:lvlOverride>) element having its ``ilvl``
        attribute set to `ilvl`.)Úilvl)Ú_add_lvlOverride)Úselfr   s     úN/var/www/html/Extract/venv/lib/python3.12/site-packages/docx/oxml/numbering.pyÚadd_lvlOverridezCT_Num.add_lvlOverride   s   € ð ×$Ñ$¨$Ð$Ó/Ð/ó    c                 óx   — t        d«      }||_        t        j                  d|«      }|j	                  |«       |S )z–Return a new ``<w:num>`` element having numId of `num_id` and having a
        ``<w:abstractNumId>`` child with val attribute set to `abstractNum_id`.úw:numr   )r   ÚnumIdr   ÚnewÚappend)ÚclsÚnum_idÚabstractNum_idÚnumÚabstractNumIds        r   r   z
CT_Num.new   s9   € ô ˜'Ó"ˆØˆŒ	Ü(×,Ñ,Ð->ÀÓOˆØ�
‰
�=Ô!Øˆ
r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r	   ÚlvlOverrider   r   r   r   Úclassmethodr   © r   r   r   r      sD   „ ñ4ñ "Ð"3Ó4€MÙ˜_Ó-€KÙ˜iÐ)9Ó:€Eò0ð
 ñó ñr   r   c                   ó<   — e Zd ZdZ edd¬«      Z ede«      Zd„ Z	y)Ú	CT_NumLvlzu``<w:lvlOverride>`` element, which identifies a level in a list definition to
    override with settings it contains.zw:startOverride)zw:lvl©Ú
successorsúw:ilvlc                 ó&   — | j                  |¬«      S )z|Return a newly added CT_DecimalNumber element having tagname
        ``w:startOverride`` and ``val`` attribute set to `val`.)Úval)Ú_add_startOverride)r   r-   s     r   Úadd_startOverridezCT_NumLvl.add_startOverride/   s   € ð ×&Ñ&¨3Ð&Ó/Ð/r   N)
r    r!   r"   r#   r
   ÚstartOverrider   r   r   r/   r&   r   r   r(   r(   (   s(   „ ñ+ñ Ð/¸JÔG€MÙ˜XÐ'7Ó8€Dó0r   r(   c                   ó8   — e Zd ZdZ edd¬«      Z edd¬«      Zy)ÚCT_NumPrzYA ``<w:numPr>`` element, a container for numbering properties applied to a
    paragraph.r+   )r   úw:numberingChangeúw:insr)   r   )r3   r4   N)r    r!   r"   r#   r
   r   r   r&   r   r   r2   r2   5   s#   „ ññ �XÐ*SÔT€DÙ�iÐ,JÔK�Er   r2   c                   ó@   — e Zd ZdZ edd¬«      Zd„ Zd„ Zed„ «       Z	y)	ÚCT_NumberingzX``<w:numbering>`` element, the root element of a numbering part, i.e.
    numbering.xml.r   )zw:numIdMacAtCleanupr)   c                 óh   — | j                   }t        j                  ||«      }| j                  |«      S )zƒReturn a newly added CT_Num (<w:num>) element referencing the abstract
        numbering definition identified by `abstractNum_id`.)Ú_next_numIdr   r   Ú_insert_num)r   r   Únext_num_idr   s       r   Úadd_numzCT_Numbering.add_numT   s0   € ð ×&Ñ&ˆÜ�j‰j˜ nÓ5ˆØ×Ñ Ó$Ð$r   c                 ól   — d|z  }	 | j                  |«      d   S # t        $ r t        d|z  «      ‚w xY w)zYReturn the ``<w:num>`` child element having ``numId`` attribute matching
        `numId`.z./w:num[@w:numId="%d"]r   z no <w:num> element with numId %d)ÚxpathÚ
IndexErrorÚKeyError)r   r   r=   s      r   Únum_having_numIdzCT_Numbering.num_having_numId[   sJ   € ð )¨5Ñ0ˆð	GØ—:‘:˜eÓ$ QÑ'Ð'øÜò 	GÜÐ=ÀÑEÓFÐFð	Gús   ‡ ›3c                 óª   — | j                  d«      }|D �cg c]  }t        |«      ‘Œ }}t        dt        |«      dz   «      D ]	  }||vsŒ |S  S c c}w )z“The first ``numId`` unused by a ``<w:num>`` element, starting at 1 and
        filling any gaps in numbering between existing ``<w:num>`` elements.z./w:num/@w:numIdé   é   )r=   ÚintÚrangeÚlen)r   Ú
numId_strsÚ	numId_strÚnum_idsr   s        r   r8   zCT_Numbering._next_numIdd   se   € ð —Z‘ZÐ 2Ó3ˆ
Ø3=Ö> i”3�y•>Ð>ˆÐ>Ü˜œC ›L¨1Ñ,Ó-ò 	ˆCØ˜'Ò!ØØˆ
ð	ð ˆ
ùò	 ?s   –AN)
r    r!   r"   r#   r	   r   r;   r@   Úpropertyr8   r&   r   r   r6   r6   N   s5   „ ññ �WÐ)AÔ
B€Cò%òGð ñó ñr   r6   N)r#   Údocx.oxml.parserr   Údocx.oxml.sharedr   Údocx.oxml.simpletypesr   Údocx.oxml.xmlchemyr   r   r   r	   r
   r   r(   r2   r6   r&   r   r   ú<module>rO      sM   ðÙ ;å (Ý -Ý 2÷õ ôˆ_ô ô2
0�ô 
0ôLˆô Lô2�?õ r   