o
    	'f                     @  s   d Z ddlmZ ddlmZmZmZmZ ddlm	Z	 ddl
mZmZmZ erJddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ G dd deZdS )z4Custom element classes related to paragraphs (CT_P).    )annotations)TYPE_CHECKINGCallableListcast)OxmlElement)BaseOxmlElement
ZeroOrMore	ZeroOrOne)WD_PARAGRAPH_ALIGNMENT)	CT_SectPr)CT_Hyperlink)CT_LastRenderedPageBreak)CT_PPr)CT_Rc                   @  s   e Zd ZU dZded< ded< ded< ded	< ed
Zded< edZedZ	d/ddZ
ed0ddZejd1ddZdd Zed2ddZed3ddZd4d"d#Zed5d%d&Zejd6d(d&Zed)d* Zd7d,d-Zd.S )8CT_PzD`<w:p>` element, containing the properties and text for a paragraph.zCallable[[], CT_R]add_rzCallable[[], CT_PPr]get_or_add_pPrzList[CT_Hyperlink]hyperlink_lstz
List[CT_R]r_lstzw:pPrzCT_PPr | NonepPrzw:hyperlinkzw:rreturnc                 C  s   t ttd}| | |S )zAReturn a new `<w:p>` element inserted directly prior to this one.zw:p)r   r   r   addprevious)selfnew_p r   P/home/ubuntu/flask/venv/lib/python3.10/site-packages/docx/oxml/text/paragraph.pyadd_p_before!   s   
zCT_P.add_p_beforeWD_PARAGRAPH_ALIGNMENT | Nonec                 C     | j }|du r	dS |jS )zFThe value of the `<w:jc>` grandchild element or |None| if not present.N)r   jc_valr   r   r   r   r   	alignment'   s   zCT_P.alignmentvaluer   c                 C     |   }||_d S N)r   r    )r   r#   r   r   r   r   r"   /      
c                 C  s   |  dD ]}| | qdS )zCRemove all child elements, except the `<w:pPr>` element if present.z./*[not(self::w:pPr)]N)xpathremove)r   childr   r   r   clear_content4   s   zCT_P.clear_contentList[CT_R | CT_Hyperlink]c                 C  
   |  dS )zCRun and hyperlink children of the `w:p` element, in document order.z./w:r | ./w:hyperlinkr'   r   r   r   r   inner_content_elements9   s   
zCT_P.inner_content_elementsList[CT_LastRenderedPageBreak]c                 C  r,   )zAll `w:lastRenderedPageBreak` descendants of this paragraph.

        Rendered page-breaks commonly occur in a run but can also occur in a run inside
        a hyperlink. This returns both.
        zI./w:r/w:lastRenderedPageBreak | ./w:hyperlink/w:r/w:lastRenderedPageBreakr-   r.   r   r   r   lastRenderedPageBreaks>   s   zCT_P.lastRenderedPageBreakssectPrr   c                 C  s   |   }|  || dS )zJUnconditionally replace or add `sectPr` as grandchild in correct sequence.N)r   _remove_sectPr_insert_sectPr)r   r2   r   r   r   r   
set_sectPrI   s   zCT_P.set_sectPr
str | Nonec                 C  r   )zpString contained in `w:val` attribute of `./w:pPr/w:pStyle` grandchild.

        |None| if not present.
        N)r   styler!   r   r   r   r7   O   s   z
CT_P.styler7   c                 C  r$   r%   )r   r7   )r   r7   r   r   r   r   r7   Z   r&   c                 C  s   d dd | dD S )zThe textual content of this paragraph.

        Inner-content child elements like `w:r` and `w:hyperlink` are translated to
        their text equivalent.
         c                 s  s    | ]}|j V  qd S r%   )text).0er   r   r   	<genexpr>f   s    zCT_P.text.<locals>.<genexpr>zw:r | w:hyperlink)joinr'   r.   r   r   r   r9   _   s   z	CT_P.textr   c                 C  s   |  d| |S )Nr   )insertr!   r   r   r   _insert_pPrh   s   zCT_P._insert_pPrN)r   r   )r   r   )r#   r   )r   r+   )r   r0   )r2   r   )r   r6   )r7   r6   )r   r   r   r   )__name__
__module____qualname____doc____annotations__r
   r   r	   	hyperlinkrr   propertyr"   setterr*   r/   r1   r5   r7   r9   r?   r   r   r   r   r      s6   
 




r   N)rC   
__future__r   typingr   r   r   r   docx.oxml.parserr   docx.oxml.xmlchemyr   r	   r
   docx.enum.textr   docx.oxml.sectionr   docx.oxml.text.hyperlinkr   docx.oxml.text.pagebreakr   docx.oxml.text.parfmtr   docx.oxml.text.runr   r   r   r   r   r   <module>   s   