ó
    ‰*£h0  ã                  óÆ   • S r SSKJr  SSKrSSKJrJrJr  SSK	J
r
  SSKJr  SSKJrJrJr  SSKJrJrJrJr  \(       a  SS	KJr  SS
KJr   " S S\5      r " S S\5      rg)z4Custom element classes related to document comments.é    )ÚannotationsN)ÚTYPE_CHECKINGÚCallableÚcast)Únsdecls)Ú	parse_xml)ÚST_DateTimeÚST_DecimalNumberÚ	ST_String)ÚBaseOxmlElementÚOptionalAttributeÚRequiredAttributeÚ
ZeroOrMore)ÚCT_Tbl)ÚCT_Pc                  óR   • \ rS rSr% SrS\S'   \" S5      rSS jrSS jr	SS jr
S	rg
)ÚCT_Commentsé   a~  `w:comments` element, the root element for the comments part.

Simply contains a collection of `w:comment` elements, each representing a single comment. Each
contained comment is identified by a unique `w:id` attribute, used to reference the comment
from the document text. The offset of the comment in this collection is arbitrary; it is
essentially a _set_ implemented as a list.
zlist[CT_Comment]Úcomment_lstz	w:commentc           
     óš   • U R                  5       n[        [        [        S[	        S5       SU S35      5      nU R                  U5        U$ )aÈ  Return newly added `w:comment` child of this `w:comments`.

The returned `w:comment` element is the minimum valid value, having a `w:id` value unique
within the existing comments and the required `w:author` attribute present but set to the
empty string. It's content is limited to a single run containing the necessary annotation
reference but no text. Content is added by adding runs to this first paragraph and by
adding additional paragraphs as needed.
z<w:comment Úwz w:id="z×" w:author="">  <w:p>    <w:pPr>      <w:pStyle w:val="CommentText"/>    </w:pPr>    <w:r>      <w:rPr>        <w:rStyle w:val="CommentReference"/>      </w:rPr>      <w:annotationRef/>    </w:r>  </w:p></w:comment>)Ú_next_available_comment_idr   Ú
CT_Commentr   r   Úappend)ÚselfÚnext_idÚcomments      ÚO/home/mande/repo/quber/.venv/lib/python3.13/site-packages/docx/oxml/comments.pyÚadd_commentÚCT_Comments.add_comment    sU   € ð ×1Ñ1Ó3ˆÜÜÜØœg c›l˜^¨7°7°)ð <ð  óó
ˆð$ 	�‰�GÔØˆó    c                óH   • U R                  SU S35      nU(       a  US   $ S$ )zRReturn the `w:comment` element identified by `comment_id`, or |None| if not found.z(./w:comment[@w:id='z'])[1]r   N©Úxpath)r   Ú
comment_idÚcomment_elmss      r   Úget_comment_by_idÚCT_Comments.get_comment_by_id?   s+   € à—z‘zÐ$8¸¸ÀFÐ"KÓLˆÞ".ˆ|˜A‰Ð8°DÐ8r!   c                óì   • U R                  S5       Vs/ s H  n[        U5      PM     nn[        USS9S-   nUS::  a  U$ [        [	        U5      5       H  u  pEXE:w  d  M  Us  $    [        U5      $ s  snf )aF  The next available comment id.

According to the schema, this can be any positive integer, as big as you like, and the
default mechanism is to use `max() + 1`. However, if that yields a value larger than will
fit in a 32-bit signed integer, we take a more deliberate approach to use the first
ununsed integer starting from 0.
z./w:comment/@w:idéÿÿÿÿ)Údefaulté   iÿÿÿ)r$   ÚintÚmaxÚ	enumerateÚsortedÚlen)r   ÚxÚused_idsr   ÚexpectedÚactuals         r   r   Ú&CT_Comments._next_available_comment_idD   s|   € ð %)§J¡JÐ/BÔ$CÓDÒ$C˜q”C˜–FÑ$CˆÐDä�h¨Ñ+¨aÑ/ˆà�iÓØˆNô !*¬&°Ó*:Ö ;ÑˆHØÕ!Ø’ñ !<ô �8‹}Ðùò Es   ”A1© N)Úreturnr   )r%   r-   r8   zCT_Comment | None)r8   r-   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r   r   r   r'   r   Ú__static_attributes__r7   r!   r   r   r      s(   ‡ ñð "Ó!á˜Ó%€Gôô>9÷
r!   r   c                  óâ   • \ rS rSr% Sr\" S\5      rS\S'   \" S\	5      r
S\S'   \" S	\	5      rS
\S'   \" S\5      rS\S'   \" SSS9r\" SSS9rS\S'   S\S'   S\S'   S\S'   \SS j5       rSrg)r   é[   aA  `w:comment` element, representing a single comment.

A comment is a so-called "story" and can contain paragraphs and tables much like a table-cell.
While probably most often used for a single sentence or phrase, a comment can contain rich
content, including multiple rich-text paragraphs, hyperlinks, images, and tables.
zw:idr-   Úidzw:authorÚstrÚauthorz
w:initialsz
str | NoneÚinitialszw:datezdt.datetime | NoneÚdatezw:pr7   )Ú
successorszw:tblzCallable[[], CT_P]Úadd_pz
list[CT_P]Úp_lstzlist[CT_Tbl]Útbl_lstzCallable[[CT_Tbl], CT_Tbl]Ú_insert_tblc                ó$   • U R                  S5      $ )z8Generate all `w:p` and `w:tbl` elements in this comment.z./w:p | ./w:tblr#   )r   s    r   Úinner_content_elementsÚ!CT_Comment.inner_content_elementsy   s   € ð �z‰zÐ+Ó,Ð,r!   N)r8   zlist[CT_P | CT_Tbl])r9   r:   r;   r<   r=   r   r
   rB   r>   r   rD   r   rE   r	   rF   r   ÚpÚtblÚpropertyrM   r?   r7   r!   r   r   r   [   s¡   ‡ ññ   Ð(8Ó9€BˆÓ9Ù# J°	Ó:€FˆCÓ:Ù,Ø�ió€Hˆjó ñ  1Ø�+ó €DÐ
ó ñ 	�5 RÑ(€AÙ
�W¨Ñ
,€Cð ÓØÓØÓØ+Ó+àó-ó ó-r!   r   )r=   Ú
__future__r   ÚdatetimeÚdtÚtypingr   r   r   Údocx.oxml.nsr   Údocx.oxml.parserr   Údocx.oxml.simpletypesr	   r
   r   Údocx.oxml.xmlchemyr   r   r   r   Údocx.oxml.tabler   Údocx.oxml.text.paragraphr   r   r   r7   r!   r   Ú<module>r\      sJ   ðÙ :å "ã ß 0Ñ 0å  Ý &ß JÑ Jß `Ó `æÝ&Ý-ôF�/ô FôR!-�õ !-r!   