
    Pqhh                       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Emu)types)CT_BodyCT_Document)DocumentPart)Settings)Length)ParagraphStyle_TableStyle)Table)	Paragraphc                  J    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      N/srv/www/ollama/chat-ollama/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,   r2   add_picture)r"   image_path_or_streamwidthheightruns        r&   r:   zDocument.add_pictureI   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"   rB   
new_sectPrs      r&   add_sectionzDocument.add_section\   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.
        )r8   	add_table_block_widthr/   )r"   rowscolsr/   tables        r&   rF   zDocument.add_tablef   s.     

$$T41B1BCr'   c                .    | j                   j                  S )zGA |CoreProperties| object providing Dublin Core properties of document.)r    core_propertiesr"   s    r&   rL   zDocument.core_propertiesp   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_shapesrM   s    r&   rO   zDocument.inline_shapesu   s     zz'''r'   c                6    | j                   j                         S )zHGenerate each `Paragraph` or `Table` in this document in document order.)r8   iter_inner_contentrM   s    r&   rQ   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.
        )r8   
paragraphsrM   s    r&   rS   zDocument.paragraphs   s     zz$$$r'   c                    | j                   S )z+The |DocumentPart| object of this document.)r    rM   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&   rV   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    rM   s    r&   sectionszDocument.sections   s     tzz22r'   c                .    | j                   j                  S )zDA |Settings| object providing access to the document-level settings.)r    settingsrM   s    r&   r[   zDocument.settings   s     zz"""r'   c                .    | j                   j                  S )zBA |Styles| object providing access to the styles in this document.)r    stylesrM   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.
        )r8   tablesrM   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.)rY   r   
page_widthleft_marginright_margin)r"   sections     r&   rG   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@   rM   s    r&   r8   zDocument._body   s0     ;; 2 2D9DK{{r'   )r#   r   r$   r   )    )r-   strr.   int)rh   N)r-   rj   r/   zstr | ParagraphStyle | Nonereturnr   )NN)r;   str | IO[bytes]r<   int | Length | Noner=   rn   )rB   r	   r   )rH   rk   rI   rk   r/   zstr | _TableStyle | None)rl   zIterator[Paragraph | Table])rl   zList[Paragraph])rl   r   )rW   rm   )rl   r   )rl   r   )rl   zList[Table])rl   r   )rl   rg   )__name__
__module____qualname____doc__r   r0   r6   r,   r:   r	   NEW_PAGErD   rF   propertyrL   rO   rQ   rS   r$   rV   rY   r[   r]   r_   rG   r8   __classcell__r%   s   @r&   r   r      sQ   / DH55%@5	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 )rg   zoProxy for `<w:body>` element in this document.

    It's primary role is a container for document content.
    c                <    t         t        |   ||       || _        y r   )r   rg   r   r8   )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.
        )r8   clear_contentrM   s    r&   r|   z_Body.clear_content   s    
 	

  "r'   )ry   r   rz   zt.ProvidesStoryPart)ro   rp   rq   rr   r   r|   ru   rv   s   @r&   rg   rg      s    
r'   rg   N)(rr   
__future__r   typingr   r   r   r   docx.blkcntnrr   docx.enum.sectionr	   docx.enum.textr
   docx.sectionr   r   docx.sharedr   r   docxr   tdocx.oxml.documentr   r   docx.parts.documentr   docx.settingsr   r   docx.styles.styler   r   
docx.tabler   docx.text.paragraphr   r   rg    r'   r&   <module>r      sY    . " 4 4 , ( # * )70&"= -c| cL r'   