
    hi                        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r$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 ddlmZ  G 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                  `   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Z
ed'd            Zej        d(d            Zd Zed)d            Zed*d            Zd+dZed,d            Zej        d-d!            Zed"             Zd.d$Zd%S )/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                t    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_ps     p/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/docx/oxml/text/paragraph.pyadd_p_beforezCT_P.add_p_before!   s2    T;u--..    WD_PARAGRAPH_ALIGNMENT | Nonec                &    | j         }|dS |j        S )zFThe value of the `<w:jc>` grandchild element or |None| if not present.N)r   jc_valr   r   s     r   	alignmentzCT_P.alignment'   s     h;4zr    valuer   c                <    |                                  }||_        d S N)r   r#   )r   r&   r   s      r   r%   zCT_P.alignment/   s    !!##


r    c                `    |                      d          D ]}|                     |           dS )zCRemove all child elements, except the `<w:pPr>` element if present.z./*[not(self::w:pPr)]N)xpathremove)r   childs     r   clear_contentzCT_P.clear_content4   s=    ZZ 788 	 	EKK	 	r    List[CT_R | CT_Hyperlink]c                ,    |                      d          S )zCRun and hyperlink children of the `w:p` element, in document order.z./w:r | ./w:hyperlinkr*   r   s    r   inner_content_elementszCT_P.inner_content_elements9   s     zz1222r    List[CT_LastRenderedPageBreak]c                ,    |                      d          S )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:lastRenderedPageBreakr0   r1   s    r   lastRenderedPageBreakszCT_P.lastRenderedPageBreaks>   s     zzW
 
 	
r    sectPrr   c                    |                                  }|                                 |                    |           dS )zJUnconditionally replace or add `sectPr` as grandchild in correct sequence.N)r   _remove_sectPr_insert_sectPr)r   r6   r   s      r   
set_sectPrzCT_P.set_sectPrI   s?    !!##6"""""r    
str | Nonec                &    | j         }|dS |j        S )zpString contained in `w:val` attribute of `./w:pPr/w:pStyle` grandchild.

        |None| if not present.
        N)r   styler$   s     r   r=   z
CT_P.styleO   s     h;4yr    r=   c                <    |                                  }||_        d S r(   )r   r=   )r   r=   r   s      r   r=   z
CT_P.styleZ   s    !!##			r    c                f    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              3  $   K   | ]}|j         V  d S r(   )text).0es     r   	<genexpr>zCT_P.text.<locals>.<genexpr>f   s$      GG!qvGGGGGGr    zw:r | w:hyperlink)joinr*   r1   s    r   rB   z	CT_P.text_   s2     wwGGtzz2E'F'FGGGGGGr    r   c                2    |                      d|           |S )Nr   )insertr$   s     r   _insert_pPrzCT_P._insert_pPrh   s    As
r    N)r   r   )r   r!   )r&   r   )r   r.   )r   r3   )r6   r   )r   r;   )r=   r;   )r   r   r   r   )__name__
__module____qualname____doc____annotations__r   r   r
   	hyperlinkrr   propertyr%   setterr-   r2   r5   r:   r=   rB   rI    r    r   r   r      s        NN((((%%%%"7++C++++
=))I
5A       X      
 3 3 3 X3 
 
 
 X
# # # #    X \   \ H H XH     r    r   N)rM   
__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   rS   r    r   <module>r^      s%   ; : " " " " " " 6 6 6 6 6 6 6 6 6 6 6 6 ( ( ( ( ( ( E E E E E E E E E E (555555++++++555555AAAAAA,,,,,,''''''U U U U U? U U U U Ur    