
    i0                        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      R/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/docx/oxml/comments.pyadd_commentCT_Comments.add_comment    sU     113gcl^77) <  
$ 	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+    zz$8F"KL".|A8D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|     %)JJ/B$CD$CqC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     zz+,,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9B9#J	:FC:,iHj   1+ D
  	5R(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!   