o
    	'f                     @  s   d Z ddlmZ ddlmZmZmZ ddlmZ ddl	m
Z
mZmZ er0ddlmZ ddlmZ G dd	 d	e
ZG d
d de
ZdS )zOCustom element classes that correspond to the document part, e.g. <w:document>.    )annotations)TYPE_CHECKINGCallableList)	CT_SectPr)BaseOxmlElement
ZeroOrMore	ZeroOrOne)CT_Tbl)CT_Pc                   @  s&   e Zd ZdZedZedddZdS )	CT_DocumentzB``<w:document>`` element, the root element of a document.xml file.zw:bodyreturnList[CT_SectPr]c                 C  s   d}|  |S )a  All `w:sectPr` elements directly accessible from document element.

        Note this does not include a `sectPr` child in a paragraphs wrapped in
        revision marks or other intervening layer, perhaps `w:sdt` or customXml
        elements.

        `w:sectPr` elements appear in document order. The last one is always
        `w:body/w:sectPr`, all preceding are `w:p/w:pPr/w:sectPr`.
        z/./w:body/w:p/w:pPr/w:sectPr | ./w:body/w:sectPrxpath)selfr    r   J/home/ubuntu/flask/venv/lib/python3.10/site-packages/docx/oxml/document.py
sectPr_lst   s   
zCT_Document.sectPr_lstN)r   r   )__name__
__module____qualname____doc__r	   bodypropertyr   r   r   r   r   r      s
    r   c                   @  s   e Zd ZU dZded< ded< ded< ded	< d
ed< edddZedddZedddZ	ded< dddZ
dd ZedddZdS ) CT_BodyzN`w:body`, the container element for the main document story in `document.xml`.zCallable[[], CT_P]add_pzCallable[[], CT_SectPr]get_or_add_sectPrz
List[CT_P]p_lstzList[CT_Tbl]tbl_lstzCallable[[CT_Tbl], CT_Tbl]_insert_tblzw:p)w:sectPr)
successorszw:tblr!   r   zCT_SectPr | NonesectPrr   r   c                 C  s8   |   }|  |  |dD ]}|| q|S )ap  Return `w:sectPr` element for new section added at end of document.

        The last `w:sectPr` becomes the second-to-last, with the new `w:sectPr` being an
        exact clone of the previous one, except that all header and footer references
        are removed (and are therefore now "inherited" from the prior section).

        A copy of the previously-last `w:sectPr` will now appear in a new `w:p` at the
        end of the document. The returned `w:sectPr` is the sentinel `w:sectPr` for the
        document (and as implemented, `is` the prior sentinel `w:sectPr` with headers
        and footers removed).
        z#w:headerReference|w:footerReference)r   r   
set_sectPrcloner   remove)r   sentinel_sectPr
hdrftr_refr   r   r   add_section_break3   s
   zCT_Body.add_section_breakc                 C  s   |  dD ]}| | qdS )z~Remove all content child elements from this <w:body> element.

        Leave the <w:sectPr> element if it is present.
        z./*[not(self::w:sectPr)]N)r   r&   )r   content_elmr   r   r   clear_contentI   s   zCT_Body.clear_contentList[CT_P | CT_Tbl]c                 C  s
   |  dS )zGenerate all `w:p` and `w:tbl` elements in this document-body.

        Elements appear in document order. Elements shaded by nesting in a `w:ins` or
        other "wrapper" element will not be included.
        z./w:p | ./w:tblr   )r   r   r   r   inner_content_elementsQ   s   
zCT_Body.inner_content_elementsN)r   r   )r   r,   )r   r   r   r   __annotations__r   ptblr	   r#   r)   r+   r   r-   r   r   r   r   r   #   s    
 
r   N)r   
__future__r   typingr   r   r   docx.oxml.sectionr   docx.oxml.xmlchemyr   r   r	   docx.oxml.tabler
   docx.oxml.text.paragraphr   r   r   r   r   r   r   <module>   s    