o
    ¿Z2hÌ  ã                   @  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
 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rdddlmZ ddlm Z  ddl!m"Z" G dd„ deƒZ#dS )z+|DocumentPart| and closely related objects.é    )Úannotations)ÚIOÚTYPE_CHECKINGÚcast)ÚDocument)ÚWD_STYLE_TYPE)ÚRELATIONSHIP_TYPE)Ú
FooterPartÚ
HeaderPart)ÚNumberingPart)ÚSettingsPart)Ú	StoryPart)Ú
StylesPart)ÚInlineShapes)Úlazyproperty)ÚCoreProperties)ÚSettings)Ú	BaseStylec                   @  sÂ   e Zd ZdZdd„ Zdd„ Zed2dd	„ƒZed
d„ ƒZd3dd„Z	d4dd„Z
d5dd„Zdd„ Zd4dd„Zedd„ ƒZed d!„ ƒZd6d$d%„Zed7d'd(„ƒZed)d*„ ƒZed8d,d-„ƒZed9d/d0„ƒZd1S ):Ú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   úd/home/skpark/git/infrasmart_work/infrasmart/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_partÚreturnr   c                 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   Údocument3   s   zDocumentPart.documentr   ÚstrÚNonec                 C  s   |   |¡ dS )z/Remove related header part identified by `rId`.N)Údrop_rel©r   r   r   r   r   Údrop_header_part8   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   r5   r7   r   r   r   Ú	get_style@   s   zDocumentPart.get_stylec                 C  r8   )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.
        )r9   Úget_style_id)r   Ústyle_or_namer7   r   r   r   r<   H   s   zDocumentPart.get_style_idc                 C  r1   )z%Return |HeaderPart| related by `rId`.r2   r/   r   r   r   r#   R   r4   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_shapesV   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   rC   [   s   ýzDocumentPart.numbering_partÚpath_or_streamústr | IO[bytes]c                 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   rD   r   r   r   rF   i   s   zDocumentPart.saver   c                 C  r&   )zcA |Settings| object providing access to the settings in the settings part of
        this document.)Ú_settings_partÚsettingsr(   r   r   r   rH   n   r)   zDocumentPart.settingsc                 C  r&   )z]A |Styles| object providing access to the styles in the styles part of this
        document.)Ú_styles_partr9   r(   r   r   r   r9   t   r)   zDocumentPart.stylesr   c                 C  sF   z
t t|  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   r@   r   ÚSETTINGSrB   Údefaultr   r   )r   Úsettings_partr   r   r   rG   z   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   ÚSTYLESrB   r   rK   r   )r   r   Ústyles_partr   r   r   rI   ˆ   s   
ûzDocumentPart._styles_partN)r%   r   )r   r,   r%   r-   )r   r,   )r5   r6   r7   r   r%   r   )rD   rE   )r%   r   )r%   r   )r%   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r    r$   Úpropertyr'   r+   r0   r   r;   r<   r#   r   r?   rC   rF   rH   r9   rG   rI   r   r   r   r   r      s4    









r   N)$rR   Ú
__future__r   Útypingr   r   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.opc.corepropsr   Údocx.settingsr   Údocx.styles.styler   r   r   r   r   r   Ú<module>   s$    