o
    	Ð'f  ã                   @  sÀ   d Z d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 dd
lmZ ddlmZ ddlmZ ddlmZ erVddlmZ G dd„ deƒZdS )z+|DocumentPart| and closely related objects.é    )Úannotations)ÚTYPE_CHECKINGÚcast)ÚDocument)ÚWD_STYLE_TYPE)ÚRELATIONSHIP_TYPE)Ú
FooterPartÚ
HeaderPart)ÚNumberingPart)ÚSettingsPart)Ú	StoryPart)Ú
StylesPart)ÚInlineShapes)Úlazyproperty)Ú	BaseStylec                   @  sº   e Zd ZdZdd„ Zdd„ Zedd„ ƒZedd	„ ƒZd-dd„Z	d.dd„Z
d/dd„Zdd„ Zd.dd„Zedd„ ƒZedd „ ƒZd!d"„ Zed#d$„ ƒZed%d&„ ƒZed'd(„ ƒZed0d*d+„ƒZd,S )1ÚDocumentParta‘  Main document part of a WordprocessingML (WML) package, aka a .docx file.

    Acts as broker to other parts such as image, core properties, and style parts. It
    also acts as a convenient delegate when a mid-document object needs a service
    involving a remote ancestor. The `Parented.part` property inherited by many content
    objects provides access to this part object for that purpose.
    c                 C  ó"   t  | j¡}|  |tj¡}||fS )z=Return (footer_part, rId) pair for newly-created footer part.)r   ÚnewÚpackageÚ	relate_toÚRTÚFOOTER)ÚselfÚfooter_partÚrId© r   úK/home/ubuntu/flask/venv/lib/python3.10/site-packages/docx/parts/document.pyÚadd_footer_part   ó   zDocumentPart.add_footer_partc                 C  r   )z=Return (header_part, rId) pair for newly-created header part.)r	   r   r   r   r   ÚHEADER)r   Úheader_partr   r   r   r   Úadd_header_part%   r   zDocumentPart.add_header_partc                 C  ó   | j jS )zfA |CoreProperties| object providing read/write access to the core properties
        of this document.)r   Úcore_properties©r   r   r   r   r#   +   ó   zDocumentPart.core_propertiesc                 C  s   t | j| ƒS )zEA |Document| object providing access to the content of this document.)r   Ú_elementr$   r   r   r   Údocument1   s   zDocumentPart.documentr   ÚstrÚreturnÚNonec                 C  s   |   |¡ dS )z/Remove related header part identified by `rId`.N)Údrop_rel©r   r   r   r   r   Údrop_header_part6   s   zDocumentPart.drop_header_partc                 C  ó
   | j | S )z%Return |FooterPart| related by `rId`.©Úrelated_partsr,   r   r   r   r   :   ó   
zDocumentPart.footer_partÚstyle_idú
str | NoneÚ
style_typer   r   c                 C  ó   | j  ||¡S )zÆReturn the style in this document matching `style_id`.

        Returns the default style for `style_type` if `style_id` is |None| or does not
        match a defined style of `style_type`.
        )ÚstylesÚ	get_by_id)r   r2   r4   r   r   r   Ú	get_style>   s   zDocumentPart.get_stylec                 C  r5   )aT  Return the style_id (|str|) of the style of `style_type` matching
        `style_or_name`.

        Returns |None| if the style resolves to the default style for `style_type` or if
        `style_or_name` is itself |None|. Raises if `style_or_name` is a style of the
        wrong type or names a style not present in the document.
        )r6   Úget_style_id)r   Ústyle_or_namer4   r   r   r   r9   F   s   zDocumentPart.get_style_idc                 C  r.   )z%Return |HeaderPart| related by `rId`.r/   r,   r   r   r   r    P   r1   zDocumentPart.header_partc                 C  s   t | jj| ƒS )zIThe |InlineShapes| instance containing the inline shapes in the document.)r   r&   Úbodyr$   r   r   r   Úinline_shapesT   s   zDocumentPart.inline_shapesc                 C  s<   z|   tj¡W S  ty   t ¡ }|  |tj¡ | Y S w )zªA |NumberingPart| object providing access to the numbering definitions for
        this document.

        Creates an empty numbering part if one is not present.
        )Úpart_related_byr   Ú	NUMBERINGÚKeyErrorr
   r   r   )r   Únumbering_partr   r   r   r@   Y   s   ýzDocumentPart.numbering_partc                 C  s   | j  |¡ dS )z…Save this document to `path_or_stream`, which can be either a path to a
        filesystem location (a string) or a file-like object.N)r   Úsave)r   Úpath_or_streamr   r   r   rA   g   s   zDocumentPart.savec                 C  r"   )zcA |Settings| object providing access to the settings in the settings part of
        this document.)Ú_settings_partÚsettingsr$   r   r   r   rD   l   r%   zDocumentPart.settingsc                 C  r"   )z]A |Styles| object providing access to the styles in the styles part of this
        document.)Ú_styles_partr6   r$   r   r   r   r6   r   r%   zDocumentPart.stylesc                 C  s@   z|   tj¡W S  ty   t | j¡}|  |tj¡ | Y S w )z«A |SettingsPart| object providing access to the document-level settings for
        this document.

        Creates a default settings part if one is not present.
        )r=   r   ÚSETTINGSr?   r   Údefaultr   r   )r   Úsettings_partr   r   r   rC   x   s   ýzDocumentPart._settings_partr   c                 C  sV   z
t t|  tj¡ƒW S  ty*   | j}|dusJ ‚t |¡}|  |tj¡ | Y S w )zqInstance of |StylesPart| for this document.

        Creates an empty styles part if one is not present.
        N)	r   r   r=   r   ÚSTYLESr?   r   rG   r   )r   r   Ústyles_partr   r   r   rE   †   s   
ûzDocumentPart._styles_partN)r   r(   r)   r*   )r   r(   )r2   r3   r4   r   r)   r   )r)   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r!   Úpropertyr#   r'   r-   r   r8   r9   r    r   r<   r@   rA   rD   r6   rC   rE   r   r   r   r   r      s4    











r   N)rN   Ú
__future__r   Útypingr   r   Údocx.documentr   Údocx.enum.styler   Údocx.opc.constantsr   r   Údocx.parts.hdrftrr   r	   Údocx.parts.numberingr
   Údocx.parts.settingsr   Údocx.parts.storyr   Údocx.parts.stylesr   Ú
docx.shaper   Údocx.sharedr   Údocx.styles.styler   r   r   r   r   r   Ú<module>   s     