
    ,hU                       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 ddlmZ ddlmZmZ ddlmZmZ er4dd	lmZ dd
lmZmZ ddlmZ ddlmZ ddlmZ ddlm Z m!Z! ddl"m#Z# ddl$m%Z%  G d de      Z& G d de	      Z'y	)z'|Document| and closely related objects.    )annotations)IOTYPE_CHECKINGIteratorList)BlockItemContainer)
WD_SECTION)WD_BREAK)SectionSections)ElementProxyEmuN)CT_BodyCT_Document)DocumentPart)Settings)Length)ParagraphStyle_TableStyle)Table)	Paragraphc                  >    e Zd ZdZd fdZdddZd ZdddZ	 	 d	 	 	 	 	 ddZe	j                  fddZdddZed	        Zed
        ZddZed d       Zed!d       Zd"dZed#d       Zed$d       Zed        Zed%d       Zed&d       Zed'd       Z xZS )(DocumentzWordprocessingML (WML) document.

    Not intended to be constructed directly. Use :func:`docx.Document` to open or create
    a document.
    c                V    t         t        |   |       || _        || _        d | _        y N)superr   __init___element_part_Document__body)selfelementpart	__class__s      O/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/docx/document.pyr   zDocument.__init__"   s'    h&w/
    c                t    d|cxk  rdk  sn t        d|z        |dk(  rdnd|z  }| j                  ||      S )a  Return a heading paragraph newly added to the end of the document.

        The heading paragraph will contain `text` and have its paragraph style
        determined by `level`. If `level` is 0, the style is set to `Title`. If `level`
        is 1 (or omitted), `Heading 1` is used. Otherwise the style is set to `Heading
        {level}`. Raises |ValueError| if `level` is outside the range 0-9.
        r   	   z"level must be in range 0-9, got %dTitlez
Heading %d)
ValueErroradd_paragraph)r!   textlevelstyles       r%   add_headingzDocument.add_heading(   sE     EQAEIJJ A:<%+?!!$..r&   c                    | j                         }|j                         j                  t        j                         |S )z=Return newly |Paragraph| object containing only a page break.)r+   add_run	add_breakr
   PAGE)r!   	paragraphs     r%   add_page_breakzDocument.add_page_break5   s1    &&(	%%hmm4r&   c                :    | j                   j                  ||      S )a  Return paragraph newly added to the end of the document.

        The paragraph is populated with `text` and having paragraph style `style`.

        `text` can contain tab (``\t``) characters, which are converted to the
        appropriate XML form for a tab. `text` can also include newline (``\n``) or
        carriage return (``\r``) characters, each of which is converted to a line
        break.
        )_bodyr+   )r!   r,   r.   s      r%   r+   zDocument.add_paragraph;   s     zz''e44r&   c                d    | j                         j                         }|j                  |||      S )a  Return new picture shape added in its own paragraph at end of the document.

        The picture contains the image at `image_path_or_stream`, scaled based on
        `width` and `height`. If neither width nor height is specified, the picture
        appears at its native size. If only one is specified, it is used to compute a
        scaling factor that is then applied to the unspecified dimension, preserving the
        aspect ratio of the image. The native size of the picture is calculated using
        the dots-per-inch (dpi) value specified in the image file, defaulting to 72 dpi
        if no value is specified, as is often the case.
        )r+   r1   add_picture)r!   image_path_or_streamwidthheightruns        r%   r9   zDocument.add_pictureG   s/        "**,3UFCCr&   c                    | j                   j                  j                         }||_        t	        || j
                        S )zReturn a |Section| object newly added at the end of the document.

        The optional `start_type` argument must be a member of the :ref:`WdSectionStart`
        enumeration, and defaults to ``WD_SECTION.NEW_PAGE`` if not provided.
        )r   bodyadd_section_break
start_typer   r   )r!   rA   
new_sectPrs      r%   add_sectionzDocument.add_sectionZ   s5     ]]''99;
 *
z4::..r&   c                b    | j                   j                  ||| j                        }||_        |S )zAdd a table having row and column counts of `rows` and `cols` respectively.

        `style` may be a table style object or a table style name. If `style` is |None|,
        the table inherits the default table style of the document.
        )r7   	add_table_block_widthr.   )r!   rowscolsr.   tables        r%   rE   zDocument.add_tabled   s.     

$$T41B1BCr&   c                .    | j                   j                  S )zGA |CoreProperties| object providing Dublin Core properties of document.)r   core_propertiesr!   s    r%   rK   zDocument.core_propertiesn   s     zz)))r&   c                .    | j                   j                  S )zThe |InlineShapes| collection for this document.

        An inline shape is a graphical object, such as a picture, contained in a run of
        text and behaving like a character glyph, being flowed like other text in a
        paragraph.
        )r   inline_shapesrL   s    r%   rN   zDocument.inline_shapess   s     zz'''r&   c                6    | j                   j                         S )zHGenerate each `Paragraph` or `Table` in this document in document order.)r7   iter_inner_contentrL   s    r%   rP   zDocument.iter_inner_content}   s    zz,,..r&   c                .    | j                   j                  S )zThe |Paragraph| instances in the document, in document order.

        Note that paragraphs within revision marks such as ``<w:ins>`` or ``<w:del>`` do
        not appear in this list.
        )r7   
paragraphsrL   s    r%   rR   zDocument.paragraphs   s     zz$$$r&   c                    | j                   S )z+The |DocumentPart| object of this document.)r   rL   s    r%   r#   zDocument.part   s     zzr&   c                :    | j                   j                  |       y)zSave this document to `path_or_stream`.

        `path_or_stream` can be either a path to a filesystem location (a string) or a
        file-like object.
        N)r   save)r!   path_or_streams     r%   rU   zDocument.save   s     	

'r&   c                B    t        | j                  | j                        S )zD|Sections| object providing access to each section in this document.)r   r   r   rL   s    r%   sectionszDocument.sections   s     tzz22r&   c                .    | j                   j                  S )zDA |Settings| object providing access to the document-level settings.)r   settingsrL   s    r%   rZ   zDocument.settings   s     zz"""r&   c                .    | j                   j                  S )zBA |Styles| object providing access to the styles in this document.)r   stylesrL   s    r%   r\   zDocument.styles   s     zz   r&   c                .    | j                   j                  S )aP  All |Table| instances in the document, in document order.

        Note that only tables appearing at the top level of the document appear in this
        list; a table nested inside a table cell does not appear. A table within
        revision marks such as ``<w:ins>`` or ``<w:del>`` will also not appear in the
        list.
        )r7   tablesrL   s    r%   r^   zDocument.tables   s     zz   r&   c                ~    | j                   d   }t        |j                  |j                  z
  |j                  z
        S )zGA |Length| object specifying the space between margins in last section.)rX   r   
page_widthleft_marginright_margin)r!   sections     r%   rF   zDocument._block_width   s9     --#7%%(;(;;g>R>RRSSr&   c                |    | j                   %t        | j                  j                  |       | _         | j                   S )z>The |_Body| instance containing the content for this document.)r    _Bodyr   r?   rL   s    r%   r7   zDocument._body   s0     ;; 2 2D9DK{{r&   )r"   r   r#   r   )    )r,   strr-   int)rg   N)r,   ri   r.   zstr | ParagraphStyle | Nonereturnr   )NN)r:   str | IO[bytes]r;   int | Length | Noner<   rm   )rA   r	   r   )rG   rj   rH   rj   r.   zstr | _TableStyle | None)rk   zIterator[Paragraph | Table])rk   zList[Paragraph])rk   r   )rV   rl   )rk   r   )rk   r   )rk   zList[Table])rk   r   )rk   rf   )__name__
__module____qualname____doc__r   r/   r5   r+   r9   r	   NEW_PAGErC   rE   propertyrK   rN   rP   rR   r#   rU   rX   rZ   r\   r^   rF   r7   __classcell__r$   s   @r%   r   r      s2   /
5 &*&*	D-D #D $	D& 4>3F3F / * * ( (/ % %  ( 3 3 # # ! ! ! ! T T
  r&   r   c                  *     e Zd ZdZd fdZd Z xZS )rf   zoProxy for `<w:body>` element in this document.

    It's primary role is a container for document content.
    c                <    t         t        |   ||       || _        y r   )r   rf   r   r7   )r!   body_elmparentr$   s      r%   r   z_Body.__init__   s    eT#Hf5
r&   c                :    | j                   j                          | S )zReturn this |_Body| instance after clearing it of all content.

        Section properties for the main document story, if present, are preserved.
        )r7   clear_contentrL   s    r%   r{   z_Body.clear_content   s    
 	

  "r&   )rx   r   ry   zt.ProvidesStoryPart)rn   ro   rp   rq   r   r{   rt   ru   s   @r%   rf   rf      s    
r&   rf   )(rq   
__future__r   typingr   r   r   r   docx.blkcntnrr   docx.enum.sectionr	   docx.enum.textr
   docx.sectionr   r   docx.sharedr   r   
docx.typestypestdocx.oxml.documentr   r   docx.parts.documentr   docx.settingsr   r   docx.styles.styler   r   
docx.tabler   docx.text.paragraphr   r   rf    r&   r%   <module>r      sY    . " 4 4 , ( # * )70&"= -a| aH r&   